iT邦幫忙

DAY 5
0

菜逼八的 Android 開發 30天系列 第 5

【菜逼八學Android】可浮在Activity之上的DialogFragment(1)

  • 分享至 

  • xImage
  •  

哈囉,終於邁入鐵人賽的第五天(歡呼),繼上次我們學會使用Fragment來製作抽屜之後,
這次想要介紹再繼續介紹其他類型的Fragment,讓大家清楚了解Fragment的妙用喔,
那這次要提到的就是DialogFragment,Dialog顧名思義就是對話方塊,而DialogFragment,
就是一個漂浮在Activity上的對話方塊囉!

它可以用在,假設有一個App,常常使用到Yes/No的對話方塊,但是又不想要每使用一次就建立一個的話,
你可以使用DialogFragment來重複使用,當然Dialog跟Fragment一樣,
可以自訂義對話方塊哦,是不是很方便呢!

※因為Dialog也是一個Fragment,所以它有屬於自己的生命週期(重點筆記)

那我們就開始來試著做一個AlertDialog的FragmentDialog吧!


Step1. 建立AlertDialog的DialogFragment

//該Class必須繼承DialogFragment
public static class MyAlertDialogFragment extends DialogFragment {

    //在該實例中傳入顯示的標題(title)
    public static MyAlertDialogFragment newInstance(int title) {
        MyAlertDialogFragment frag = new MyAlertDialogFragment();
        Bundle args = new Bundle();
        args.putInt("title", title); //傳入title參數
        frag.setArguments(args);
        return frag;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        int title = getArguments().getInt("title"); //取得參數title

	//回傳AlertDialog
        return new AlertDialog.Builder(getActivity())
                .setIcon(R.drawable.alert_dialog_icon)
                .setTitle(title)
                .setPositiveButton("確定",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            ((FragmentAlertDialog)getActivity()).doPositiveClick();
                        }
                    }
                )
                .setNegativeButton("取消",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            ((FragmentAlertDialog)getActivity()).doNegativeClick();
                        }
                    }
                )
                .create();
    }
}

Step2. 在Activity中呼叫DialogFragment

public class DialogFragmentExampleActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        DialogFragment newFragment = MyAlertDialogFragment.newInstance(
            "您確定要參加鐵人賽嗎?");
        newFragment.show(getFragmentManager(), "dialog");
    }
}

public void doPositiveClick() {
    Log.i("FragmentAlertDialog", "按下確定");
}

public void doNegativeClick() {
    // Do stuff here.
    Log.i("FragmentAlertDialog", "按下取消");
}

這樣子就完成了AlertDialog的DialogFragment啦,那今天就到這邊,我們明天見囉~

以上內容皆參考官方文件:http://developer.android.com/reference/android/app/DialogFragment.html


上一篇
【菜逼八學Android】像抽屜一樣,可以開關的MENU,Navigation Drawer(4)
下一篇
【菜逼八學Android】可浮在Activity之上的DialogFragment(2)
系列文
菜逼八的 Android 開發 30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言